/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package rn;

import controladores.CambioDeRepuestosJpaController;
import controladores.CambioRepuestosLoteJpaController;
import controladores.CategoriaRepuestoJpaController;
import controladores.DepositoJpaController;
import controladores.IngresoRepuestoJpaController;
import controladores.LoteIngresoRepuestoJpaController;
import controladores.MarcaRepuestoJpaController;
import controladores.ModeloRepuestoJpaController;
import controladores.ProveedorRepuestoJpaController;
import controladores.RepuestoJpaController;
import controladores.RuedasReemplazadasJpaController;
import controladores.TecnicoJpaController;
import controladores.exceptions.NonexistentEntityException;
import entidades.CambioDeRepuestos;
import entidades.CambioRepuestosLote;
import entidades.CategoriaRepuesto;
import entidades.Deposito;
import entidades.IngresoRepuesto;
import entidades.LoteIngresoRepuesto;
import entidades.MarcaRepuesto;
import entidades.ModeloRepuesto;
import entidades.ProveedorRepuesto;
import entidades.Repuesto;
import entidades.RuedasReemplazadas;
import entidades.Tecnico;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author Pablo
 */
public class RepuestoRN {
    
    private static EntityManagerFactory factory  = Persistence.createEntityManagerFactory("Hormicat-SistemaIntegralPU");
    private static RepuestoJpaController repuestoJpaController = new RepuestoJpaController(factory);
    private static CategoriaRepuestoJpaController categoriaRepuestoJpaController = new CategoriaRepuestoJpaController(factory);
    private static MarcaRepuestoJpaController marcaRepuestoJpaController = new MarcaRepuestoJpaController(factory);
    private static ModeloRepuestoJpaController modeloRepuestoJpaController = new ModeloRepuestoJpaController(factory);
    private static ProveedorRepuestoJpaController proveedorRepuestoJpaController = new ProveedorRepuestoJpaController(factory);
    private static DepositoJpaController depositoJpaController = new DepositoJpaController(factory);
    private static IngresoRepuestoJpaController ingresoRepuestoJpaController = new IngresoRepuestoJpaController(factory);
    private static LoteIngresoRepuestoJpaController loteIngresoRepuestoJpaController = new LoteIngresoRepuestoJpaController(factory);
    private static TecnicoJpaController tecnicoJpaController = new TecnicoJpaController(factory);
    private static CambioDeRepuestosJpaController cambioDeRepuestosJpaController = new CambioDeRepuestosJpaController(factory);
    private static RuedasReemplazadasJpaController ruedasReemplazadasJpaController = new RuedasReemplazadasJpaController(factory);
    private static CambioRepuestosLoteJpaController cambioRepuestosLoteJpaController = new CambioRepuestosLoteJpaController(factory);    

    //Repuesto
    public static void create(Repuesto repuesto) {
        repuestoJpaController.create(repuesto);
    }

    public static void edit(Repuesto repuesto) {
        try {
            repuestoJpaController.edit(repuesto);
        } catch (Exception ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public static void eliminar(Long id){
        try {
            repuestoJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static List<Repuesto> getTodosVechiculos() {
        return repuestoJpaController.findRepuestoEntities();
    }
    
    public static List<Repuesto> getRepuestosLike(String value, int parametro) {
        return repuestoJpaController.getRepuestosLike(value, parametro);
    }
    
    public static boolean yaExiste(String value, int parametro, Long id_excepcion) {
        return repuestoJpaController.yaExiste(value, parametro, id_excepcion);
    }
    
    public static List<Repuesto> getRepuestosPor(String value, String parametro) {
        return repuestoJpaController.getRepuestosPor(value, parametro);
    }
    
    public static Repuesto findRepuestoPorID(Long id) {
        return repuestoJpaController.findRepuesto(id);
    }
    
    public static Repuesto findRepuestoPorCodigo(String codigo) {
        return repuestoJpaController.findRepuestoPorCodigo(codigo);
    }
    
     //MarcaRepuesto
    public static void create(MarcaRepuesto vehiculo) {
        marcaRepuestoJpaController.create(vehiculo);
    }

    public static void edit(MarcaRepuesto vehiculo) {
        try {
            marcaRepuestoJpaController.edit(vehiculo);
        } catch (Exception ex) {
            Logger.getLogger(VehiculoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static List<MarcaRepuesto> getTodosMarcaRepuesto() {
        return marcaRepuestoJpaController.findMarcaRepuestoEntities();
    }

    public static MarcaRepuesto findMarcaRepuestoPorID(Long id) {
        return marcaRepuestoJpaController.findMarcaRepuesto(id);
    }
    
    public static boolean yaExisteMarcaRepuesto(String value, Long id_excepcion) {
        return marcaRepuestoJpaController.yaExiste(value, id_excepcion);
    }

    //ModeloRepuesto
    public static void create(ModeloRepuesto modeloRepuesto) {
        modeloRepuestoJpaController.create(modeloRepuesto);
    }

    public static void edit(ModeloRepuesto modeloRepuesto) {
        try {
            modeloRepuestoJpaController.edit(modeloRepuesto);
        } catch (Exception ex) {

        }
    }

    public static List<ModeloRepuesto> getTodosModeloRepuesto() {
        return modeloRepuestoJpaController.findModeloRepuestoEntities();
    }

    public static ModeloRepuesto findModeloRepuestoPorID(Long id) {
        return modeloRepuestoJpaController.findModeloRepuesto(id);
    }
    
    public static List<ModeloRepuesto> getModeloRepuestosPorMarcaRepuesto(Long id) {
        return modeloRepuestoJpaController.getModeloRepuestosPorMarcaRepuesto(id);
    }
    
    public static boolean yaExisteModeloRepuesto(String value, Long id_excepcion) {
        return modeloRepuestoJpaController.yaExiste(value, id_excepcion);
    }
    
    public static void eliminarModeloRepuesto(Long id){
        try {
            modeloRepuestoJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //CategoriaRepuesto
    public static void create(CategoriaRepuesto categoriaRepuesto) {
        categoriaRepuestoJpaController.create(categoriaRepuesto);
    }

    public static void edit(CategoriaRepuesto categoriaRepuesto) {
        try {
            categoriaRepuestoJpaController.edit(categoriaRepuesto);
        } catch (Exception ex) {

        }
    }

    public static List<CategoriaRepuesto> getTodosCategoriaRepuesto() {
        return categoriaRepuestoJpaController.findCategoriaRepuestoEntities();
    }

    public static CategoriaRepuesto findCategoriaRepuestoPorID(Long id) {
        return categoriaRepuestoJpaController.findCategoriaRepuesto(id);
    }
    
    //Proveedor
    public static void create(ProveedorRepuesto proveedorRepuesto) {
        proveedorRepuestoJpaController.create(proveedorRepuesto);
    }

    public static void edit(ProveedorRepuesto proveedorRepuesto) {
        try {
            proveedorRepuestoJpaController.edit(proveedorRepuesto);
        } catch (Exception ex) {

        }
    }

    public static List<ProveedorRepuesto> getTodosProveedorRepuesto() {
        return proveedorRepuestoJpaController.findProveedorRepuestoEntities();
    }

    public static ProveedorRepuesto findProveedorRepuestoPorID(Long id) {
        return proveedorRepuestoJpaController.findProveedorRepuesto(id);
    }
    
    public static void eliminarProveedor(Long id){
        try {
            proveedorRepuestoJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public static boolean yaExiste(String value, Long id_excepcion) {
        return proveedorRepuestoJpaController.yaExiste(value, id_excepcion);
    }
    
    public static ProveedorRepuesto getProveedorNO_ESP(){
        return proveedorRepuestoJpaController.getProveedorNO_ESP();
    }
    
    public static boolean yaExisteCategoriaRepuesto(String value, Long id_excepcion) {
        return categoriaRepuestoJpaController.yaExiste(value, id_excepcion);
    }
    
    //Deposito
    public static void create(Deposito deposito) {
        depositoJpaController.create(deposito);
    }

    public static void edit(Deposito deposito) {
        try {
            depositoJpaController.edit(deposito);
        } catch (Exception ex) {

        }
    }

    public static List<Deposito> getTodosDeposito() {
        return depositoJpaController.findDepositoEntities();
    }

    public static Deposito findDepositoPorID(Long id) {
        return depositoJpaController.findDeposito(id);
    }
    
    //Ingreso Repuestos
    
    public static void create(IngresoRepuesto ingresoRepuesto) {
        ingresoRepuestoJpaController.create(ingresoRepuesto);
    }

    public static void edit(IngresoRepuesto ingresoRepuesto) {
        try {
            ingresoRepuestoJpaController.edit(ingresoRepuesto);
        } catch (Exception ex) {

        }
    }

    public static List<IngresoRepuesto> getTodosIngresoRepuesto() {
        return ingresoRepuestoJpaController.findIngresoRepuestoEntities();
    }

    public static IngresoRepuesto findIngresoRepuestoPorID(Long id) {
        return ingresoRepuestoJpaController.findIngresoRepuesto(id);
    }
    
    //Lote ingreso repuestos
    public static void create(LoteIngresoRepuesto lote_ingresoRepuesto) {
        loteIngresoRepuestoJpaController.create(lote_ingresoRepuesto);
    }
    
    public static Long getUltimoLoteIngresado(){
        return loteIngresoRepuestoJpaController.getUltimoIngreso();
    }
    
    //Tecnico
    public static List<Tecnico> getTodosTecnicos(){
        return tecnicoJpaController.findTecnicoEntities();
    }
    
    public static boolean yaExisteTecnico(String apellido, String nombre, Long id_excepcion) {
        return tecnicoJpaController.yaExiste(apellido, nombre, id_excepcion);
    }
    
    public static void create(Tecnico tecnico) {
        tecnicoJpaController.create(tecnico);
    }
    
    public static void edit(Tecnico tecnico) {
        try {
            tecnicoJpaController.edit(tecnico);
        } catch (Exception ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public static Tecnico findTecnicoPorID(Long id) {
        return tecnicoJpaController.findTecnico(id);
    }
    
    //Cambio de repuestos
    public static void create(CambioDeRepuestos cambio){
        cambioDeRepuestosJpaController.create(cambio);
    }
    
    //Ruedas Reemplazadas
    public static void create(RuedasReemplazadas ruedas){
        ruedasReemplazadasJpaController.create(ruedas);        
    }
    
    //Cambio de repuestos lote
    public static void create(CambioRepuestosLote cambio){
        cambioRepuestosLoteJpaController.create(cambio);
    }
    
    public static Long getUltimoLoteDeCambio(){
        return cambioRepuestosLoteJpaController.getUltimoCambio();
    }
    
    //Deposito
    public static boolean yaExisteDeposito(String value, Long id_excepcion) {
        return depositoJpaController.yaExiste(value, id_excepcion);
    }
    
    public static List<Deposito> getTodosDepositos(){
        return depositoJpaController.findDepositoEntities();
    }
    
}
